package com.emm.yixun.marketing.service;
import javax.jws.WebService;

import com.emm.yixun.common.app.GetNonpaymentListReqDto;
import com.emm.yixun.common.app.GetNonpaymentListResDto;
import com.emm.yixun.common.app.GetNonpaymentNumResDto;
import com.emm.yixun.common.model.NeedReceiveRefund;
import com.emm.yixun.common.model.NeedReceiveRefundInfo;
import com.emm.yixun.common.model.dto.NeedReceiveRefundDto;
import com.emm.yixun.common.model.dto.NeedReceiveRefundInfoDto;
import com.emm.yixun.common.model.dto.SubscribeDto;
import com.emm.yixun.common.page.Page;
import com.emm.yixun.common.response.Response;
import com.emm.yixun.common.response.ResponseList;
@WebService
public interface NeedReceiveRefundServiceFacade{
	/**
	*新增
	*/
	Response<NeedReceiveRefundDto> save(NeedReceiveRefundDto dto);

	/**
	*修改,当selective=true时修改非空列,当selective=false修改所有列
	*/
	Response<Integer> updateByPrimaryKey(NeedReceiveRefundDto dto,Boolean selective);

	/**
	 *逻辑删除
	 */
	Response<Integer> deleteByPrimaryKey(Long id);

	/**
	 *主键查询
	 */
	Response<NeedReceiveRefund> findById(Long id);

	/**
	 *根据dto查询记录
	 */
	ResponseList<NeedReceiveRefund> findByDto(NeedReceiveRefundDto dto);
	/**
	 *根据dto以及分页参数查询记录
	 */
	Page<NeedReceiveRefund> findPageByDto(NeedReceiveRefundDto dto,Integer begin,Integer row);

	/**
	 *根据dto以及分页参数查询记录
	 */
	Page<NeedReceiveRefundInfo> findPageByDtoInfo(NeedReceiveRefundInfoDto dto,Integer begin,Integer row);

	/**
	 *根据dto以及分页参数查询记录
	 */
	Page<NeedReceiveRefundInfo> findPageByDtoReport(NeedReceiveRefundInfoDto dto,Integer begin,Integer row);

	/**
	 * 待收记录
	 * 每条待收记录,包含已收金额
	 */
	ResponseList<NeedReceiveRefundDto> findNrrfDtoByDto(NeedReceiveRefundDto dto);

	/**
	 *主键查询
	 */
	Response<NeedReceiveRefundInfo> findInfoById(Long id);
	/**
	* 方法描述 : 验证认筹,认购金是否已经收完
	* 创建者：ThinkPad
	* 项目名称： emm-marketing-api
	* 类名： NeedReceiveRefundServiceFacade.java
	* 版本： v1.0
	* 创建时间： 2016年8月17日 下午4:20:40
	* @param payId
	* @param subId
	* @return Response<Boolean>
	 */
	Response<Boolean> vaildNeedReceive(Long payId,Long subId);


	Response<Integer> deleteByDto(NeedReceiveRefundDto dto);

	boolean isDelByDto(NeedReceiveRefundDto dto);

	/**
	 * 签约回款提醒条数
	 * @param dto
	 * @return
	 */
	Response<Integer> selectNonpaymentNum(NeedReceiveRefundDto dto, int day);

	/**
	 * 签约回款提醒分页列表
	 * @param dto
	 * @return
	 */
	Page<NeedReceiveRefundInfo> selectNonpaymentPage(NeedReceiveRefundDto dto, Long projectId, int day, Integer begin, Integer row);

	/**
	 * 签约回款提醒列表
	 * @param dto
	 * @return
	 */
	ResponseList<NeedReceiveRefundInfo> selectNonpaymentList(NeedReceiveRefundDto dto, Long projectId, int day);

	/**
	 * 签约回款提醒数量(app)
	 * @param reqDto
	 * @return
	 */
	GetNonpaymentNumResDto selectNonpaymentNumByApp(GetNonpaymentListReqDto reqDto);

	/**
	 * 签约回款提醒分页(app)
	 * @param reqDto
	 * @return
	 */
	GetNonpaymentListResDto selectNonpaymentPageByApp(GetNonpaymentListReqDto reqDto);

	/**
	 * 逾期未付款记录数
	 */
	Response<Integer> getOverduePaymentListCount(NeedReceiveRefundDto dto);

	/**
	 * 逾期未付款记录
	 */
	Page<NeedReceiveRefundInfo> getOverduePaymentPageModel(NeedReceiveRefundDto dto, Integer pageSize, Integer pageNum);
		
}
